<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
    <title>Coverage for skf/api/questions/business.py: 72%</title>
    <link rel="icon" sizes="32x32" href="favicon_32.png">
    <link rel="stylesheet" href="style.css" type="text/css">
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="jquery.hotkeys.js"></script>
    <script type="text/javascript" src="jquery.isonscreen.js"></script>
    <script type="text/javascript" src="coverage_html.js"></script>
    <script type="text/javascript">
        jQuery(document).ready(coverage.pyfile_ready);
    </script>
</head>
<body class="pyfile">
<div id="header">
    <div class="content">
        <h1>Coverage for <b>skf/api/questions/business.py</b> :
            <span class="pc_cov">72%</span>
        </h1>
        <img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
        <h2 class="stats">
            85 statements &nbsp;
            <button type="button" class="run shortkey_r button_toggle_run" title="Toggle lines run">61 run</button>
            <button type="button" class="mis show_mis shortkey_m button_toggle_mis" title="Toggle lines missing">24 missing</button>
            <button type="button" class="exc show_exc shortkey_x button_toggle_exc" title="Toggle lines excluded">0 excluded</button>
        </h2>
    </div>
</div>
<div class="help_panel">
    <img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
    <p class="legend">Hot-keys on this page</p>
    <div>
    <p class="keyhelp">
        <span class="key">r</span>
        <span class="key">m</span>
        <span class="key">x</span>
        <span class="key">p</span> &nbsp; toggle line displays
    </p>
    <p class="keyhelp">
        <span class="key">j</span>
        <span class="key">k</span> &nbsp; next/prev highlighted chunk
    </p>
    <p class="keyhelp">
        <span class="key">0</span> &nbsp; (zero) top of page
    </p>
    <p class="keyhelp">
        <span class="key">1</span> &nbsp; (one) first highlighted chunk
    </p>
    </div>
</div>
<div id="source">
    <p id="t1" class="run"><span class="n"><a href="#t1">1</a></span><span class="t"><span class="key">from</span> <span class="nam">sqlalchemy</span> <span class="key">import</span> <span class="nam">or_</span>&nbsp;</span><span class="r"></span></p>
    <p id="t2" class="run"><span class="n"><a href="#t2">2</a></span><span class="t"><span class="key">from</span> <span class="nam">skf</span><span class="op">.</span><span class="nam">database</span> <span class="key">import</span> <span class="nam">db</span>&nbsp;</span><span class="r"></span></p>
    <p id="t3" class="run"><span class="n"><a href="#t3">3</a></span><span class="t"><span class="key">from</span> <span class="nam">flask</span> <span class="key">import</span> <span class="nam">abort</span>&nbsp;</span><span class="r"></span></p>
    <p id="t4" class="run"><span class="n"><a href="#t4">4</a></span><span class="t"><span class="key">from</span> <span class="nam">skf</span><span class="op">.</span><span class="nam">database</span><span class="op">.</span><span class="nam">checklists_kb</span> <span class="key">import</span> <span class="nam">ChecklistKB</span>&nbsp;</span><span class="r"></span></p>
    <p id="t5" class="run"><span class="n"><a href="#t5">5</a></span><span class="t"><span class="key">from</span> <span class="nam">skf</span><span class="op">.</span><span class="nam">database</span><span class="op">.</span><span class="nam">questions</span> <span class="key">import</span> <span class="nam">Question</span>&nbsp;</span><span class="r"></span></p>
    <p id="t6" class="run"><span class="n"><a href="#t6">6</a></span><span class="t"><span class="key">from</span> <span class="nam">skf</span><span class="op">.</span><span class="nam">database</span><span class="op">.</span><span class="nam">checklists_results</span> <span class="key">import</span> <span class="nam">ChecklistResult</span>&nbsp;</span><span class="r"></span></p>
    <p id="t7" class="run"><span class="n"><a href="#t7">7</a></span><span class="t"><span class="key">from</span> <span class="nam">skf</span><span class="op">.</span><span class="nam">database</span><span class="op">.</span><span class="nam">question_results</span> <span class="key">import</span> <span class="nam">QuestionResult</span>&nbsp;</span><span class="r"></span></p>
    <p id="t8" class="run"><span class="n"><a href="#t8">8</a></span><span class="t"><span class="key">from</span> <span class="nam">skf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">security</span> <span class="key">import</span> <span class="nam">log</span><span class="op">,</span> <span class="nam">val_num</span><span class="op">,</span> <span class="nam">val_alpha</span><span class="op">,</span> <span class="nam">val_alpha_num</span><span class="op">,</span> <span class="nam">val_alpha_num_special</span>&nbsp;</span><span class="r"></span></p>
    <p id="t9" class="run"><span class="n"><a href="#t9">9</a></span><span class="t"><span class="key">import</span> <span class="nam">sys</span>&nbsp;</span><span class="r"></span></p>
    <p id="t10" class="pln"><span class="n"><a href="#t10">10</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t11" class="run"><span class="n"><a href="#t11">11</a></span><span class="t"><span class="key">def</span> <span class="nam">get_questions</span><span class="op">(</span><span class="nam">checklists_type</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t12" class="run"><span class="n"><a href="#t12">12</a></span><span class="t">    <span class="nam">log</span><span class="op">(</span><span class="str">"User requested list of questions"</span><span class="op">,</span> <span class="str">"LOW"</span><span class="op">,</span> <span class="str">"PASS"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t13" class="run"><span class="n"><a href="#t13">13</a></span><span class="t">    <span class="nam">val_num</span><span class="op">(</span><span class="nam">checklists_type</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t14" class="run"><span class="n"><a href="#t14">14</a></span><span class="t">    <span class="nam">result</span> <span class="op">=</span> <span class="nam">Question</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">Question</span><span class="op">.</span><span class="nam">checklist_type</span> <span class="op">==</span> <span class="nam">checklists_type</span><span class="op">)</span><span class="op">.</span><span class="nam">paginate</span><span class="op">(</span><span class="num">1</span><span class="op">,</span> <span class="num">2500</span><span class="op">,</span> <span class="key">False</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t15" class="run"><span class="n"><a href="#t15">15</a></span><span class="t">    <span class="key">return</span> <span class="nam">result</span>&nbsp;</span><span class="r"></span></p>
    <p id="t16" class="pln"><span class="n"><a href="#t16">16</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t17" class="pln"><span class="n"><a href="#t17">17</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t18" class="run"><span class="n"><a href="#t18">18</a></span><span class="t"><span class="key">def</span> <span class="nam">get_question_by_id</span><span class="op">(</span><span class="nam">question_id</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t19" class="mis show_mis"><span class="n"><a href="#t19">19</a></span><span class="t">    <span class="nam">log</span><span class="op">(</span><span class="str">"User requested question by id"</span><span class="op">,</span> <span class="str">"LOW"</span><span class="op">,</span> <span class="str">"PASS"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t20" class="mis show_mis"><span class="n"><a href="#t20">20</a></span><span class="t">    <span class="nam">val_num</span><span class="op">(</span><span class="nam">question_id</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t21" class="mis show_mis"><span class="n"><a href="#t21">21</a></span><span class="t">    <span class="nam">result</span> <span class="op">=</span> <span class="nam">Question</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">Question</span><span class="op">.</span><span class="nam">id</span> <span class="op">==</span> <span class="nam">question_id</span><span class="op">)</span><span class="op">.</span><span class="nam">first</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t22" class="mis show_mis"><span class="n"><a href="#t22">22</a></span><span class="t">    <span class="key">return</span> <span class="nam">result</span>&nbsp;</span><span class="r"></span></p>
    <p id="t23" class="pln"><span class="n"><a href="#t23">23</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t24" class="run"><span class="n"><a href="#t24">24</a></span><span class="t"><span class="key">def</span> <span class="nam">store_questions</span><span class="op">(</span><span class="nam">checklist_type</span><span class="op">,</span> <span class="nam">maturity</span><span class="op">,</span> <span class="nam">data</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t25" class="run"><span class="n"><a href="#t25">25</a></span><span class="t">    <span class="nam">log</span><span class="op">(</span><span class="str">"User stored new sprint question list"</span><span class="op">,</span> <span class="str">"MEDIUM"</span><span class="op">,</span> <span class="str">"PASS"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t26" class="pln"><span class="n"><a href="#t26">26</a></span><span class="t">    <span class="com">#Store the result of the questionaire if answer was true in checklists_kb</span>&nbsp;</span><span class="r"></span></p>
    <p id="t27" class="run"><span class="n"><a href="#t27">27</a></span><span class="t">    <span class="key">for</span> <span class="nam">result</span> <span class="key">in</span> <span class="nam">data</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'questions'</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t28" class="run"><span class="n"><a href="#t28">28</a></span><span class="t">        <span class="nam">project_id</span> <span class="op">=</span> <span class="nam">result</span><span class="op">[</span><span class="str">'project_id'</span><span class="op">]</span>&nbsp;</span><span class="r"></span></p>
    <p id="t29" class="run"><span class="n"><a href="#t29">29</a></span><span class="t">        <span class="nam">sprint_id</span> <span class="op">=</span> <span class="nam">result</span><span class="op">[</span><span class="str">'sprint_id'</span><span class="op">]</span>&nbsp;</span><span class="r"></span></p>
    <p id="t30" class="run"><span class="n"><a href="#t30">30</a></span><span class="t">        <span class="nam">question_id</span> <span class="op">=</span> <span class="nam">result</span><span class="op">[</span><span class="str">'question_id'</span><span class="op">]</span>&nbsp;</span><span class="r"></span></p>
    <p id="t31" class="run"><span class="n"><a href="#t31">31</a></span><span class="t">        <span class="key">if</span> <span class="nam">result</span><span class="op">[</span><span class="str">'result'</span><span class="op">]</span> <span class="op">==</span> <span class="str">"True"</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t32" class="run"><span class="n"><a href="#t32">32</a></span><span class="t">            <span class="nam">checklists</span> <span class="op">=</span> <span class="nam">select_checklist_items_by_maturity</span><span class="op">(</span><span class="nam">maturity</span><span class="op">,</span> <span class="nam">question_id</span><span class="op">,</span> <span class="nam">checklist_type</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t33" class="run"><span class="n"><a href="#t33">33</a></span><span class="t">            <span class="nam">store_question_results</span><span class="op">(</span><span class="nam">checklists</span><span class="op">,</span> <span class="nam">project_id</span><span class="op">,</span> <span class="nam">sprint_id</span><span class="op">,</span> <span class="nam">checklist_type</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t34" class="pln"><span class="n"><a href="#t34">34</a></span><span class="t">    <span class="com">#Also check for the include always marked items so they are taken in account</span>&nbsp;</span><span class="r"></span></p>
    <p id="t35" class="run"><span class="n"><a href="#t35">35</a></span><span class="t">    <span class="nam">checklists_always</span> <span class="op">=</span> <span class="nam">select_checklist_items_by_maturity_include_always</span><span class="op">(</span><span class="nam">maturity</span><span class="op">,</span> <span class="nam">checklist_type</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t36" class="run"><span class="n"><a href="#t36">36</a></span><span class="t">    <span class="nam">store_question_results_include_always</span><span class="op">(</span><span class="nam">checklists_always</span><span class="op">,</span> <span class="nam">project_id</span><span class="op">,</span> <span class="nam">sprint_id</span><span class="op">,</span> <span class="nam">checklist_type</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t37" class="run"><span class="n"><a href="#t37">37</a></span><span class="t">    <span class="key">return</span> <span class="op">{</span><span class="str">'message'</span><span class="op">:</span> <span class="str">'Sprint successfully created'</span><span class="op">}</span>&nbsp;</span><span class="r"></span></p>
    <p id="t38" class="pln"><span class="n"><a href="#t38">38</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t39" class="pln"><span class="n"><a href="#t39">39</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t40" class="run"><span class="n"><a href="#t40">40</a></span><span class="t"><span class="key">def</span> <span class="nam">select_checklist_items_by_maturity</span><span class="op">(</span><span class="nam">maturity</span><span class="op">,</span> <span class="nam">question_id</span><span class="op">,</span> <span class="nam">checklist_type</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t41" class="run"><span class="n"><a href="#t41">41</a></span><span class="t">    <span class="nam">switcher</span> <span class="op">=</span> <span class="op">{</span>&nbsp;</span><span class="r"></span></p>
    <p id="t42" class="pln"><span class="n"><a href="#t42">42</a></span><span class="t">        <span class="num">1</span><span class="op">:</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">question_id</span> <span class="op">==</span> <span class="nam">question_id</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">checklist_type</span> <span class="op">==</span> <span class="nam">checklist_type</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">1</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">include_always</span> <span class="op">==</span> <span class="num">0</span><span class="op">)</span><span class="op">.</span><span class="nam">all</span><span class="op">(</span><span class="op">)</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t43" class="pln"><span class="n"><a href="#t43">43</a></span><span class="t">        <span class="num">2</span><span class="op">:</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">question_id</span> <span class="op">==</span> <span class="nam">question_id</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">checklist_type</span> <span class="op">==</span> <span class="nam">checklist_type</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">or_</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">1</span><span class="op">,</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">2</span><span class="op">)</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">include_always</span> <span class="op">==</span> <span class="num">0</span><span class="op">)</span><span class="op">.</span><span class="nam">all</span><span class="op">(</span><span class="op">)</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t44" class="pln"><span class="n"><a href="#t44">44</a></span><span class="t">        <span class="num">3</span><span class="op">:</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">question_id</span> <span class="op">==</span> <span class="nam">question_id</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">checklist_type</span> <span class="op">==</span> <span class="nam">checklist_type</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">or_</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">1</span><span class="op">,</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">2</span><span class="op">,</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">3</span><span class="op">)</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">include_always</span> <span class="op">==</span> <span class="num">0</span><span class="op">)</span><span class="op">.</span><span class="nam">all</span><span class="op">(</span><span class="op">)</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t45" class="pln"><span class="n"><a href="#t45">45</a></span><span class="t">    <span class="op">}</span>&nbsp;</span><span class="r"></span></p>
    <p id="t46" class="run"><span class="n"><a href="#t46">46</a></span><span class="t">    <span class="nam">func</span> <span class="op">=</span> <span class="nam">switcher</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">maturity</span><span class="op">,</span> <span class="key">lambda</span><span class="op">:</span> <span class="str">"Invalid search"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t47" class="run"><span class="n"><a href="#t47">47</a></span><span class="t">    <span class="key">return</span> <span class="nam">func</span>&nbsp;</span><span class="r"></span></p>
    <p id="t48" class="pln"><span class="n"><a href="#t48">48</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t49" class="pln"><span class="n"><a href="#t49">49</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t50" class="run"><span class="n"><a href="#t50">50</a></span><span class="t"><span class="key">def</span> <span class="nam">select_checklist_items_by_maturity_include_always</span><span class="op">(</span><span class="nam">maturity</span><span class="op">,</span> <span class="nam">checklist_type</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t51" class="run"><span class="n"><a href="#t51">51</a></span><span class="t">    <span class="nam">switcher</span> <span class="op">=</span> <span class="op">{</span>&nbsp;</span><span class="r"></span></p>
    <p id="t52" class="pln"><span class="n"><a href="#t52">52</a></span><span class="t">        <span class="num">1</span><span class="op">:</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">include_always</span> <span class="op">==</span> <span class="num">1</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">checklist_type</span> <span class="op">==</span> <span class="nam">checklist_type</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">1</span><span class="op">)</span><span class="op">.</span><span class="nam">all</span><span class="op">(</span><span class="op">)</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t53" class="pln"><span class="n"><a href="#t53">53</a></span><span class="t">        <span class="num">2</span><span class="op">:</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">include_always</span> <span class="op">==</span> <span class="num">1</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">checklist_type</span> <span class="op">==</span> <span class="nam">checklist_type</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">or_</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">1</span><span class="op">,</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">2</span><span class="op">)</span><span class="op">)</span><span class="op">.</span><span class="nam">all</span><span class="op">(</span><span class="op">)</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t54" class="pln"><span class="n"><a href="#t54">54</a></span><span class="t">        <span class="num">3</span><span class="op">:</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">include_always</span> <span class="op">==</span> <span class="num">1</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">checklist_type</span> <span class="op">==</span> <span class="nam">checklist_type</span><span class="op">)</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">or_</span><span class="op">(</span><span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">1</span><span class="op">,</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">2</span><span class="op">,</span> <span class="nam">ChecklistKB</span><span class="op">.</span><span class="nam">maturity</span> <span class="op">==</span> <span class="num">3</span><span class="op">)</span><span class="op">)</span><span class="op">.</span><span class="nam">all</span><span class="op">(</span><span class="op">)</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t55" class="pln"><span class="n"><a href="#t55">55</a></span><span class="t">    <span class="op">}</span>&nbsp;</span><span class="r"></span></p>
    <p id="t56" class="run"><span class="n"><a href="#t56">56</a></span><span class="t">    <span class="nam">func</span> <span class="op">=</span> <span class="nam">switcher</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">maturity</span><span class="op">,</span> <span class="key">lambda</span><span class="op">:</span> <span class="str">"Invalid search"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t57" class="run"><span class="n"><a href="#t57">57</a></span><span class="t">    <span class="key">return</span> <span class="nam">func</span>&nbsp;</span><span class="r"></span></p>
    <p id="t58" class="pln"><span class="n"><a href="#t58">58</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t59" class="pln"><span class="n"><a href="#t59">59</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t60" class="run"><span class="n"><a href="#t60">60</a></span><span class="t"><span class="key">def</span> <span class="nam">store_question_results</span><span class="op">(</span><span class="nam">checklists</span><span class="op">,</span> <span class="nam">project_id</span><span class="op">,</span> <span class="nam">sprint_id</span><span class="op">,</span> <span class="nam">checklist_type</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t61" class="run"><span class="n"><a href="#t61">61</a></span><span class="t">    <span class="key">try</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t62" class="run"><span class="n"><a href="#t62">62</a></span><span class="t">        <span class="key">for</span> <span class="nam">row</span> <span class="key">in</span> <span class="nam">checklists</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t63" class="mis show_mis"><span class="n"><a href="#t63">63</a></span><span class="t">            <span class="nam">checklist</span> <span class="op">=</span> <span class="nam">ChecklistResult</span><span class="op">(</span><span class="num">1</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t64" class="mis show_mis"><span class="n"><a href="#t64">64</a></span><span class="t">            <span class="nam">checklist</span><span class="op">.</span><span class="nam">project_id</span> <span class="op">=</span> <span class="nam">project_id</span>&nbsp;</span><span class="r"></span></p>
    <p id="t65" class="mis show_mis"><span class="n"><a href="#t65">65</a></span><span class="t">            <span class="nam">checklist</span><span class="op">.</span><span class="nam">sprint_id</span> <span class="op">=</span> <span class="nam">sprint_id</span>&nbsp;</span><span class="r"></span></p>
    <p id="t66" class="mis show_mis"><span class="n"><a href="#t66">66</a></span><span class="t">            <span class="nam">checklist</span><span class="op">.</span><span class="nam">kb_id</span> <span class="op">=</span> <span class="nam">row</span><span class="op">.</span><span class="nam">kb_id</span>&nbsp;</span><span class="r"></span></p>
    <p id="t67" class="mis show_mis"><span class="n"><a href="#t67">67</a></span><span class="t">            <span class="nam">checklist</span><span class="op">.</span><span class="nam">checklist_id</span> <span class="op">=</span> <span class="nam">row</span><span class="op">.</span><span class="nam">id</span>&nbsp;</span><span class="r"></span></p>
    <p id="t68" class="mis show_mis"><span class="n"><a href="#t68">68</a></span><span class="t">            <span class="nam">checklist</span><span class="op">.</span><span class="nam">checklist_type_id</span> <span class="op">=</span> <span class="nam">checklist_type</span>&nbsp;</span><span class="r"></span></p>
    <p id="t69" class="mis show_mis"><span class="n"><a href="#t69">69</a></span><span class="t">            <span class="nam">db</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">add</span><span class="op">(</span><span class="nam">checklist</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t70" class="mis show_mis"><span class="n"><a href="#t70">70</a></span><span class="t">            <span class="nam">db</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">commit</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t71" class="mis show_mis"><span class="n"><a href="#t71">71</a></span><span class="t">    <span class="key">except</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t72" class="mis show_mis"><span class="n"><a href="#t72">72</a></span><span class="t">        <span class="nam">abort</span><span class="op">(</span><span class="num">400</span><span class="op">,</span> <span class="str">"error storing checklist results"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t73" class="pln"><span class="n"><a href="#t73">73</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t74" class="pln"><span class="n"><a href="#t74">74</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t75" class="run"><span class="n"><a href="#t75">75</a></span><span class="t"><span class="key">def</span> <span class="nam">store_question_results_include_always</span><span class="op">(</span><span class="nam">checklists</span><span class="op">,</span> <span class="nam">project_id</span><span class="op">,</span> <span class="nam">sprint_id</span><span class="op">,</span> <span class="nam">checklist_type</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t76" class="run"><span class="n"><a href="#t76">76</a></span><span class="t">    <span class="key">try</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t77" class="run"><span class="n"><a href="#t77">77</a></span><span class="t">        <span class="key">for</span> <span class="nam">row</span> <span class="key">in</span> <span class="nam">checklists</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t78" class="mis show_mis"><span class="n"><a href="#t78">78</a></span><span class="t">            <span class="nam">checklists</span> <span class="op">=</span> <span class="nam">ChecklistResult</span><span class="op">(</span><span class="num">1</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t79" class="mis show_mis"><span class="n"><a href="#t79">79</a></span><span class="t">            <span class="nam">checklists</span><span class="op">.</span><span class="nam">project_id</span> <span class="op">=</span> <span class="nam">project_id</span>&nbsp;</span><span class="r"></span></p>
    <p id="t80" class="mis show_mis"><span class="n"><a href="#t80">80</a></span><span class="t">            <span class="nam">checklists</span><span class="op">.</span><span class="nam">sprint_id</span> <span class="op">=</span> <span class="nam">sprint_id</span>&nbsp;</span><span class="r"></span></p>
    <p id="t81" class="mis show_mis"><span class="n"><a href="#t81">81</a></span><span class="t">            <span class="nam">checklists</span><span class="op">.</span><span class="nam">kb_id</span> <span class="op">=</span> <span class="nam">row</span><span class="op">.</span><span class="nam">kb_id</span>&nbsp;</span><span class="r"></span></p>
    <p id="t82" class="mis show_mis"><span class="n"><a href="#t82">82</a></span><span class="t">            <span class="nam">checklists</span><span class="op">.</span><span class="nam">checklist_id</span> <span class="op">=</span> <span class="nam">row</span><span class="op">.</span><span class="nam">id</span>&nbsp;</span><span class="r"></span></p>
    <p id="t83" class="mis show_mis"><span class="n"><a href="#t83">83</a></span><span class="t">            <span class="nam">checklists</span><span class="op">.</span><span class="nam">checklist_type_id</span> <span class="op">=</span> <span class="nam">checklist_type</span>&nbsp;</span><span class="r"></span></p>
    <p id="t84" class="mis show_mis"><span class="n"><a href="#t84">84</a></span><span class="t">            <span class="nam">db</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">add</span><span class="op">(</span><span class="nam">checklists</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t85" class="mis show_mis"><span class="n"><a href="#t85">85</a></span><span class="t">            <span class="nam">db</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">commit</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t86" class="mis show_mis"><span class="n"><a href="#t86">86</a></span><span class="t">    <span class="key">except</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t87" class="mis show_mis"><span class="n"><a href="#t87">87</a></span><span class="t">        <span class="nam">abort</span><span class="op">(</span><span class="num">400</span><span class="op">,</span> <span class="str">"error storing checklist results - include always"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t88" class="pln"><span class="n"><a href="#t88">88</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t89" class="pln"><span class="n"><a href="#t89">89</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t90" class="run"><span class="n"><a href="#t90">90</a></span><span class="t"><span class="key">def</span> <span class="nam">new_question</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t91" class="run"><span class="n"><a href="#t91">91</a></span><span class="t">    <span class="nam">log</span><span class="op">(</span><span class="str">"User created new sprint question item"</span><span class="op">,</span> <span class="str">"MEDIUM"</span><span class="op">,</span> <span class="str">"PASS"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t92" class="run"><span class="n"><a href="#t92">92</a></span><span class="t">    <span class="nam">sprint</span> <span class="op">=</span> <span class="nam">Question</span><span class="op">(</span><span class="nam">data</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'question'</span><span class="op">)</span><span class="op">,</span> <span class="nam">data</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'checklist_type'</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t93" class="run"><span class="n"><a href="#t93">93</a></span><span class="t">    <span class="nam">db</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">add</span><span class="op">(</span><span class="nam">sprint</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t94" class="run"><span class="n"><a href="#t94">94</a></span><span class="t">    <span class="nam">db</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">commit</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t95" class="run"><span class="n"><a href="#t95">95</a></span><span class="t">    <span class="key">return</span> <span class="op">{</span><span class="str">'message'</span><span class="op">:</span> <span class="str">'New Question successfully created'</span><span class="op">}</span>&nbsp;</span><span class="r"></span></p>
    <p id="t96" class="pln"><span class="n"><a href="#t96">96</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t97" class="pln"><span class="n"><a href="#t97">97</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t98" class="run"><span class="n"><a href="#t98">98</a></span><span class="t"><span class="key">def</span> <span class="nam">update_question</span><span class="op">(</span><span class="nam">id_question</span><span class="op">,</span> <span class="nam">data</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t99" class="run"><span class="n"><a href="#t99">99</a></span><span class="t">    <span class="nam">log</span><span class="op">(</span><span class="str">"User updated sprint question item"</span><span class="op">,</span> <span class="str">"MEDIUM"</span><span class="op">,</span> <span class="str">"PASS"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t100" class="run"><span class="n"><a href="#t100">100</a></span><span class="t">    <span class="nam">sprint</span> <span class="op">=</span> <span class="nam">Question</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">Question</span><span class="op">.</span><span class="nam">id</span> <span class="op">==</span> <span class="nam">id_question</span><span class="op">)</span><span class="op">.</span><span class="nam">one</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t101" class="run"><span class="n"><a href="#t101">101</a></span><span class="t">    <span class="nam">sprint</span><span class="op">.</span><span class="nam">question</span> <span class="op">=</span> <span class="nam">data</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'question'</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t102" class="run"><span class="n"><a href="#t102">102</a></span><span class="t">    <span class="nam">sprint</span><span class="op">.</span><span class="nam">checklist_type</span> <span class="op">=</span> <span class="nam">data</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'checklist_type'</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t103" class="run"><span class="n"><a href="#t103">103</a></span><span class="t">    <span class="nam">db</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">add</span><span class="op">(</span><span class="nam">sprint</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t104" class="run"><span class="n"><a href="#t104">104</a></span><span class="t">    <span class="nam">db</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">commit</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t105" class="run"><span class="n"><a href="#t105">105</a></span><span class="t">    <span class="key">return</span> <span class="op">{</span><span class="str">'message'</span><span class="op">:</span> <span class="str">'Question successfully updated'</span><span class="op">}</span>&nbsp;</span><span class="r"></span></p>
    <p id="t106" class="pln"><span class="n"><a href="#t106">106</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t107" class="pln"><span class="n"><a href="#t107">107</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t108" class="run"><span class="n"><a href="#t108">108</a></span><span class="t"><span class="key">def</span> <span class="nam">delete_question</span><span class="op">(</span><span class="nam">id_question</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t109" class="run"><span class="n"><a href="#t109">109</a></span><span class="t">    <span class="nam">log</span><span class="op">(</span><span class="str">"User deleted question"</span><span class="op">,</span> <span class="str">"MEDIUM"</span><span class="op">,</span> <span class="str">"PASS"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t110" class="run"><span class="n"><a href="#t110">110</a></span><span class="t">    <span class="nam">sprint</span> <span class="op">=</span> <span class="nam">Question</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">filter</span><span class="op">(</span><span class="nam">Question</span><span class="op">.</span><span class="nam">id</span> <span class="op">==</span> <span class="nam">id_question</span><span class="op">)</span><span class="op">.</span><span class="nam">one</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t111" class="run"><span class="n"><a href="#t111">111</a></span><span class="t">    <span class="nam">db</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">delete</span><span class="op">(</span><span class="nam">sprint</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t112" class="run"><span class="n"><a href="#t112">112</a></span><span class="t">    <span class="nam">db</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">commit</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t113" class="run"><span class="n"><a href="#t113">113</a></span><span class="t">    <span class="key">return</span> <span class="op">{</span><span class="str">'message'</span><span class="op">:</span> <span class="str">'Question successfully deleted'</span><span class="op">}</span>&nbsp;</span><span class="r"></span></p>
</div>
<div id="footer">
    <div class="content">
        <p>
            <a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v5.5</a>,
            created at 2021-03-26 13:45 +0100
        </p>
    </div>
</div>
</body>
</html>
